#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""  
@Project : pythonProject1
@File : Foxes.py
@Author : 蓝精灵
@Time : 2025/11/2 19:35  
@脚本说明 : 
"""
import argparse
from tools.mysqltools import mysql_brute_run
from tools.redistools import redis_brute_run
from tools.porttools import port_brute_run
from tools.dirtools import dir_brute_run
from tools.sshtools import ssh_brute_run
from tools.subdomain import subdomain_brute_run
from setting.colocr import Colors

banner = """
 ________  ______   __    __  ________   ______  
/        |/      \ /  |  /  |/        | /      \ 
$$$$$$$$//$$$$$$  |$$ |  $$ |$$$$$$$$/ /$$$$$$  |
$$ |__   $$ |  $$ |$$  \/$$/ $$ |__    $$ \__$$/ 
$$    |  $$ |  $$ | $$  $$<  $$    |   $$      \ 
$$$$$/   $$ |  $$ |  $$$$  \ $$$$$/     $$$$$$  |
$$ |     $$ \__$$ | $$ /$$  |$$ |_____ /  \__$$ |
$$ |     $$    $$/ $$ |  $$ |$$       |$$    $$/ 
$$/       $$$$$$/  $$/   $$/ $$$$$$$$/  $$$$$$/  
                                                 
                                                 
                                                 
"""

print(f"{Colors.BLUE_BRIGHT}{Colors.BOLD}{banner}{Colors.RESET}")

# 实例化创建解析器对象
parser = argparse.ArgumentParser(description="狐狸综合漏扫")
# 创建子解析器对象
sub_parser = parser.add_subparsers(title="狐狸综合漏扫", description="请选择您所需要的功能", dest="sub_command")

# 向子命令中添加所需要的参数
mysql_sub_parser = sub_parser.add_parser("mysql", help="MySQL漏扫")
mysql_sub_parser.add_argument("-H", "--host", dest="host", type=str, help="主机地址", default="127.0.0.1")
mysql_sub_parser.add_argument("-P", "--port", dest="port", type=int, help="端口", default=3306)
mysql_sub_parser.add_argument("-u", "--user", dest="user", type=str, help="用户名", default="root")
mysql_sub_parser.add_argument("-p", "--passwd", dest="passwd", type=argparse.FileType(mode="r", encoding="utf-8"),
                              help="用户密码", default="dict/passwd.dict")

redis_sub_parser = sub_parser.add_parser("redis", help="Redis漏扫")
redis_sub_parser.add_argument("-H", "--host", dest="host", type=str, help="主机地址", default="127.0.0.1")
redis_sub_parser.add_argument("-P", "--port", dest="port", type=int, help="端口", default=6379)
redis_sub_parser.add_argument("-p", "--passwd", dest="passwd", type=argparse.FileType(mode="r", encoding="utf-8"),
                              help="用户密码", default="dict/passwd.dict")

ssh_sub_parser = sub_parser.add_parser("ssh", help="SSH漏扫")
ssh_sub_parser.add_argument("-H", "--host", dest="host", type=str, help="主机地址", default="127.0.0.1")
ssh_sub_parser.add_argument("-P", "--port", dest="port", type=int, help="端口", default=22)
ssh_sub_parser.add_argument("-u", "--user", dest="user", type=str, help="用户名", default="root")
ssh_sub_parser.add_argument("-p", "--passwd", dest="passwd", type=argparse.FileType(mode="r", encoding="utf-8"),
                              help="用户密码", default="dict/passwd.dict")

ssh_sub_parser = sub_parser.add_parser("port", help="端口信息收集")
ssh_sub_parser.add_argument("-H", "--host", dest="host", type=str, help="主机地址", default="127.0.0.1")

dir_sub_parser = sub_parser.add_parser("dir", help="路径遍历")
dir_sub_parser.add_argument("-u", "--url", dest="url", type=str, help="URL地址", default="http://127.0.0.1")
dir_sub_parser.add_argument("-d", "--dir", dest="dir", type=argparse.FileType(mode="r", encoding="utf-8"),
                              help="路径字典", default="dict/dir.dict")

dir_sub_parser = sub_parser.add_parser("subdomain", help="子域名遍历")
dir_sub_parser.add_argument("-u", "--url", dest="url", type=str, help="URL地址", default="http://127.0.0.1")
dir_sub_parser.add_argument("-s", "--subdomain", dest="subdomain", type=argparse.FileType(mode="r", encoding="utf-8"),
                              help="路径字典", default="dict/subdomain.dict")

# 解析一级菜单
args = parser.parse_args()
if args.sub_command == "mysql":
    mysql_brute_run(args.host, args.port, args.user, args.passwd)
elif args.sub_command == "redis":
    redis_brute_run(args.host, args.port, args.passwd)
elif args.sub_command == "ssh":
    ssh_brute_run(args.host, args.port, args.user, args.passwd)
elif args.sub_command == "port":
    port_brute_run(args.host)
elif args.sub_command == "dir":
    dir_brute_run(args.url, args.dir)
elif args.sub_command == "subdomain":
    subdomain_brute_run(args.url, args.subdomain)
else:
    parser.print_help()